前一节我们讲解了两个栈实现一个队列,现在我们用两个队列实现一个栈。
关于栈和队列的特点在前一节我们已经讲解过了,现在我们直接看用两个队列实现栈的出入。
7.1入栈
入栈很简单,只需要将队列q1入栈即可。
int PushStack(sequeue_t *queue1, data_t data)
{
if(queue1 == NULL)
{
return -1;
}
sequeue_en(queue1,data);
return 0;
}
7.2出栈
出栈有两步操作:
第一步:先把q1(总数-1)的元素转移到q2中,取出q1的最后一个元素即为出栈。
第二步:把q2的元素转移会q1,。
data_t PopStack(sequeue_t *queue1, sequeue_t *queue2)
{
data_t tmp;
if((queue1 == NULL)||(queue1 == NULL))
{
return -1;
}
if(sequeue_is_empty(queue1))
{
printf("Stack Empty!\n");
}
else
{
if(sequeue_is_full(queue2))
{
printf("Stack Full!\n");
}
else
{
while(sequeue_length(queue1) != 1)
{
sequeue_en(queue2,sequeue_de(queue1));
}
tmp = sequeue_de(queue1);
while(sequeue_is_empty(queue2)==0)
{
sequeue_en(queue1,sequeue_de(queue2));
}
return tmp;
}
}
}
资源获取方法
1.关注公众号[嵌入式实验楼]
2.在公众号回复关键词[Data Structures and Algorithms]获取资料提取码